/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package model.dao;

import model.ConnectionFactory;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import model.beans.Produto;

/**
 *
 * @author Juliane Chaerki
 */
public class ProdutoDAO {
     private Connection con;
    private PreparedStatement stmtInserir;
    private PreparedStatement stmtAtualizar;
    private PreparedStatement stmtConsulta;

    public ProdutoDAO() throws Exception {
        con = ConnectionFactory.getConnection();   
    }

    public ProdutoDAO(Connection con) throws Exception {
        this.con = con;
    }

    public int inserir(Produto produto) throws Exception {
        stmtInserir = con.prepareStatement("INSERT INTO produto(nome, idTipo, modelo, fabricante) VALUES(?,?,?,?)");
        stmtInserir.setString(1, produto.getNome());
        stmtInserir.setInt(2, produto.getTipoProduto().getIdTipoProduto());
        stmtInserir.setString(3, produto.getModelo());
        stmtInserir.setString(4, produto.getFabricante());
        
        stmtInserir.executeUpdate();
        
        stmtConsulta = con.prepareStatement("SELECT MAX(idProduto) as id FROM produto");
        ResultSet rs = stmtConsulta.executeQuery();
        rs.next();
        int id = rs.getInt("id");
        return id;
    }
    
    public void atualizar(Produto produto) throws Exception{
        stmtAtualizar = con.prepareStatement("UPDATE produto SET nome = ?, idTipo = ?, modelo = ?, fabricante = ? WHERE idProduto = ?");
        stmtAtualizar.setString(1, produto.getNome());
        stmtAtualizar.setInt(2, produto.getTipoProduto().getIdTipoProduto());
        stmtAtualizar.setString(3, produto.getModelo());
        stmtAtualizar.setString(4, produto.getFabricante());
        stmtAtualizar.setInt(5, produto.getIdProduto());
        
        stmtAtualizar.executeUpdate();
    }
    
    @Override
    public void finalize() throws Throwable{
        super.finalize();
        stmtInserir.close();
        stmtAtualizar.close();
        stmtConsulta.close();
        con.close();
    }
}
